package Modelo;
import java.awt.Image;
import java.awt.Toolkit;
import org.w3c.dom.Document;
import org.w3c.dom.Element;


public class BloqueVacio extends Bloque {
	
	private Integer prioridad;
	private Image imagenAire;

	
	public BloqueVacio(Posicion posicion, Planeta planeta){
		super(posicion,planeta);
		this.prioridad = 1;
		imagenAire = Toolkit.getDefaultToolkit().getImage("imagenes/aire.png");

	}
	
	public BloqueVacio(Element xmlElement){
		super(xmlElement);
	}
	
	public Integer getPrioridad (){
		return prioridad;
	}
	

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "-";
	}

	@Override
	public void actuar(Pooglin pooglin) {
		// TODO Auto-generated method stub
		// Si el pooglin se encuentra sobre el bloque

		if (abajoPooglin(pooglin)){
			pooglin.caer();
		}

		//}
		// Si el pooglin va en sentido hacia derecha
		if (pooglin.haciaDerecha() && pooglin.getBloquesCaidos()<1 && 
				adelantePooglinDerecha(pooglin)){
				pooglin.caminar();
		}
		// Si el pooglin va en sentido contrario
		else{
			if ((adelantePooglinIzquierda(pooglin))
					&& pooglin.getBloquesCaidos()<1)
				pooglin.caminar();
		}
	}

	@Override
	public void romper(Pooglin pooglin) {
		// TODO Auto-generated method stub
		this.actuar(pooglin);
	}

	@Override
	public void excavarUnBloque(Pooglin pooglin) {
		// TODO Auto-generated method stub
		this.actuar(pooglin);
	}

	@Override
	public void transportarPooglin(Pooglin pooglin) {
		// TODO Auto-generated method stub
		// Si el pooglin va en sentido hacia derecha
		if (pooglin.haciaDerecha()){
			if (adelantePooglinDerecha(pooglin)){
					((Teletransportacion)pooglin.getHabilidad()).transportarUnPaso();
					pooglin.caminar();
				}
		}
		// Si el pooglin va en sentido contrario
		else{
			if (adelantePooglinIzquierda(pooglin)){
					((Teletransportacion)pooglin.getHabilidad()).transportarUnPaso();
					pooglin.caminar();
				}
		}

	}

	@Override
	public void construirTunel(Pooglin pooglin) {
		// TODO Auto-generated method stub	
		 pooglin.getTerrenoActual().construirTunel(pooglin.getPosicion(),pooglin.haciaDerecha());
		 ((TunelElectromagnetico)pooglin.getHabilidad()).construirUnBloqueDeTunel();			  
		 pooglin.moverDiagonalArriba();		
	}

	public Image getImagen() {
		return this.imagenAire;
	} 
	
	public Element toXml(Document doc) {
		// TODO Auto-generated method stub
		Element xmlElement = doc.createElement("Bloque");
		xmlElement.setAttribute("Tipo", "BloqueVacio");
		xmlElement.setAttribute("prioridad", ""+this.prioridad);
		xmlElement.appendChild(this.getPosicion().toXml(doc));
		
		return xmlElement;
	}
}